package com.ysx.controller;
import com.itheima.constant.MessageConstant;
import com.itheima.entity.PageResult;
import com.itheima.entity.QueryPageBean;
import com.itheima.entity.Result;
import com.itheima.health.pojo.CheckGroup;
import com.ysx.service.CheckGroupService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


import java.util.Arrays;
import java.util.List;

@RestController
@RequestMapping("/checkgroup")
public class CheckGroupController {


    @Autowired
    private CheckGroupService checkGroupService;

    /**
     * 查询检查组
     */
    @RequestMapping("/findAllGroup")
    public Result findAllGroup() {
//        调用service 层 返回CheckGroup集合
        List<CheckGroup> groups=checkGroupService.findAllGroup();
//        判断groups对象是否为空 根据不同的结果处理
        Result result=null;
        if(groups!=null){
            result=new Result(true,MessageConstant.QUERY_CHECKGROUP_SUCCESS,groups);
        }else {
            result=new Result(false,MessageConstant.QUERY_CHECKGROUP_FAIL);
        }
        return result;
    }


    /**
     * 添加检查组
     */
    @PreAuthorize("hasAuthority('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')")
    @RequestMapping("/add")
//    因为json是一个对象 属性就是跟CheckItem一样的 需要用requestBody进行封装数据
//    而checkitemIds对象是一个数组  可以直接用数组来接受
    public Result addGroup(@RequestBody CheckGroup checkGroup, int [] ids) {
        System.out.println("接受到的对象是：" + checkGroup);
        System.out.println("接受到的集合对象是：" + Arrays.toString(ids));
//        调用service层 对象 传入两个参数 返回一个受影响的行数
        int i = checkGroupService.addGroupId(checkGroup, ids);
//        根据不同的结果封装数据返回
        Result result=null;
        if(i>0){
            result=new Result(true, MessageConstant.ADD_CHECKGROUP_SUCCESS);
        }else {
            result=new Result(false, MessageConstant.ADD_CHECKGROUP_FAIL);
        }
        return result;
    }

    /**
     * 查询分页
     */
    @RequestMapping("/findPage")
    public Result findGroupPage(@RequestBody QueryPageBean queryPageBean) {
        System.out.println("后端接受到的对象为：" + queryPageBean);
//        调用service层 返回一个封装的对象 PageResult
       PageResult<CheckGroup> pages=checkGroupService.findGroupPage(queryPageBean);
//        判断对象是否为Null
        Result result;
        if(pages!=null){
            //        根据结果处理
            result=new Result(true,MessageConstant.QUERY_CHECKGROUP_SUCCESS,pages);
        }
        else {
            result=new Result(false,MessageConstant.QUERY_CHECKGROUP_FAIL);
        }
        return result;
    }

    /**
     * 表单对应检查项id回显
     */
    @RequestMapping("/findId")
    public Result findId(int id) {
//        获取到id 调用service层 查询记录返回集合
        List<Integer> Ids=checkGroupService.findId(id);
//        判断返回结果
        Result result=null;
        if(Ids!=null){
            result=new Result(true,MessageConstant.QUERY_CHECKITEM_SUCCESS,Ids);
        }else {
            result=new Result(false,MessageConstant.QUERY_CHECKITEM_FAIL);
        }
        return result;
    }

    /**
     * 伪级联更新检查组
     */
    @RequestMapping("/updateGroup")
    public Result updateGroup(int [] ids,@RequestBody CheckGroup checkGroup) {
//        验证是否封装成功
        System.out.println("ids:"+Arrays.toString(ids));
        System.out.println("checkGroup:" + checkGroup);
//       调用service层 传入对象 返回受影响的行数
       int rows= checkGroupService.updateGroup(ids,checkGroup);
//       根据不同结果封装数据
        Result result=null;
        if(rows>0){
            result = new Result(true, MessageConstant.EDIT_CHECKGROUP_SUCCESS);
        }else {
            result = new Result(false, MessageConstant.EDIT_CHECKGROUP_SUCCESS);
        }
//        返回结果
        return result;
    }


}
